package com.blue.gateway.annotation;


import com.blue.gateway.paycore.ChannelServiceRegistry;
import com.blue.gateway.enums.PayChannelEnum;
import com.blue.gateway.enums.ServiceChannelEnum;
import org.springframework.beans.factory.support.BeanDefinitionRegistryPostProcessor;
import org.springframework.stereotype.Component;

import java.lang.annotation.*;

/**
 * @author xiaoyiming
 * @date 2020/5/3 15:36
 * @depiction 用来标识支付通道的服务，此支付通道的服务单独的规则命名
 * 命名规则 支付通道+支付通道服务+Service后缀，如 wxrefundService
 * 此注解的使用通过实现spring的{@link BeanDefinitionRegistryPostProcessor}接口来解析
 * {@link ChannelServiceRegistry}
 */
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Component
public @interface Channel {
    /**
     * 支付渠道枚举，这里主要是获取此枚举里的支付通道英文名称，如
     * alipay、wx
     */
    PayChannelEnum PayChannel();

    /**
     * 支付通道服务枚举，此枚举里定义了所有能够提供的服务，
     * 如pay、refund等
     */
    ServiceChannelEnum ServiceChannel();
}
